﻿/*
 * Created by SharpDevelop.
 * User: Lousabit
 * Date: 31/10/2011
 * Time: 2:42
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;

namespace Business_Entity
{
	/// <summary>
	/// Description of BEDescuento.
	/// </summary>
	public class BEDescuento
	{

		private int id;
		private BEProducto producto;
		private int cantidadMinima;
		private int cantidadMaxima;
		private double descuento;
		private DateTime desde;
		private DateTime hasta;
		private List<BEProducto> productos;
		private List<BECategoriaCliente> categorias;
		private List<BEServicio> servicios;
		private String descripcion;
		
		public BEDescuento(int id){
			this.id = id;
			
			this.productos = new List<BEProducto>();
			this.categorias = new List<BECategoriaCliente>();
			this.servicios = new List<BEServicio>();
		}
		
		public String Descripcion{
			get{return this.descripcion;}
			set{this.descripcion = value;}
		}
		
		public BEDescuento(){
			productos = new List<BEProducto>();
			this.categorias = new List<BECategoriaCliente>();
			this.servicios = new List<BEServicio>();
		}
		
		public BEDescuento(int id, int cantidadMinima, DateTime desde, DateTime hasta, double descuento)
		{
			this.id = id;
			this.cantidadMinima = cantidadMinima;
			this.desde = desde;
			this.hasta = hasta;
			this.descuento = descuento;
			
			this.productos = new List<BEProducto>();
			this.categorias = new List<BECategoriaCliente>();
		}
						
		public BEProducto Producto{
			get{return this.producto;}
			set{this.producto = value;}
		}
		
		public int Id{
			get{return this.id;}
			set{this.id = value;}
		}
		
		public int CantidadMinima{
			get{return this.cantidadMinima;}
			set{this.cantidadMinima = value;}
		}
		
		public int CantidadMaxima{
			get{return this.cantidadMaxima;}
			set{this.cantidadMaxima = value;}
		}
		
		public double Descuento{
			get{return this.descuento;}
			set{this.descuento = value;}
		}
		
		public DateTime Desde{
			get{return this.desde;}
			set{this.desde = value;}
		}
		
		public DateTime Hasta{
			get{return this.hasta;}
			set{this.hasta = value;}
		}
		
		public void agregarProducto(BEProducto p){
			this.productos.Add(p);
		}
		
		public void agregarCategoria(BECategoriaCliente p){
			this.categorias.Add(p);
		}
		
		public void agregarServicio(BEServicio s){
			this.servicios.Add(s);
		}
		
		public List<BEServicio> Servicios{
			get{return this.servicios;}
			set{this.servicios = value;}
		}
		
		public List<BEProducto> Productos{
			get{return this.productos;}
			set{this.productos = value;}
		}
		
		public List<BECategoriaCliente> Categorias{
			get{return this.categorias;}
			set{this.categorias = value;}
		}
		
		public bool tieneProducto(BEProducto p){
			for (int i=0; i<productos.Count; i++){
				if (productos[i].Codigo == p.Codigo)
					return true;
			}
			
			return false;
		}
		
		public bool tieneServicio(BEServicio s){
			for (int i=0; i<servicios.Count; i++){
				if (servicios[i].Codigo == s.Codigo)
					return true;
			}
			
			return false;
		}
		
		public bool tieneCategoria(BECategoriaCliente c){
			for (int i=0; i<categorias.Count;i++){
				if (categorias[i].IdCategoria == c.IdCategoria){
					return true;
				}
			}
			
			return false;
		}

		public void borrarProductosIndice(List<int> indices){
			
			List<BEProducto> nuevaLista = new List<BEProducto>();
			
			for(int i=0; i<this.productos.Count; i++){
				if (indices.IndexOf(i) == -1){
					nuevaLista.Add(this.productos[i]);
				}
			}
			
			this.productos = nuevaLista;
			
		}
		
		public void borrarServiciosIndice(List<int> indices){
			
			List<BEServicio> nuevaLista = new List<BEServicio>();
			
			for(int i=0; i<this.servicios.Count; i++){
				if (indices.IndexOf(i) == -1){
					nuevaLista.Add(this.servicios[i]);
				}
			}
			
			this.servicios = nuevaLista;
			
		}
		
		public void borrarCategoriasIndice(List<int> indices){
			
			List<BECategoriaCliente> nuevaLista = new List<BECategoriaCliente>();
			
			for(int i=0; i<this.categorias.Count; i++){
				if (indices.IndexOf(i) == -1){
					nuevaLista.Add(this.categorias[i]);
				}
			}
			
			this.categorias = nuevaLista;
			
		}
				
	}
}
